The present invention relates generally to the field of computer data storage, and more particularly to resilient data storage on heterogeneous arrays of computer storage devices.
Heterogeneous arrays of computer storage devices may include two or more different types of computer storage devices and may provide one or more quality of service (QoS) levels. In the field of computer data storage, factors that may affect QoS include bandwidth, latency, and queue depth. The QoS of an array of computer storage devices may be based, at least in part, on the type(s) of storage devices on which the data resides. A heterogeneous array of computer storage devices may provide different QoS levels by segregating the computer storage devices into two or more homogeneous tiers. Each homogeneous tier may comprise a single type of computer storage device. Accordingly, each tier may have characteristics including capacity, latency, throughput, accessibility, reliability, and resiliency.
In the field of computer data storage, creating and storing redundant copies of data may increase resiliency. For example, mirroring replicates original data, thereby creating a mirror copy that is redundant data. Redundant data may be accessible if the original data is corrupted or otherwise inaccessible. Redundant data may be stored on one or more computer storage devices that are physically separate from the computer storage device(s) that contain the original data. As a result, redundant data may be accessible if the computer storage device(s) containing the original data fail.
Similarly, error-correcting codes may provide increased resiliency and allow corrupted or inaccessible data to be identified and, in some cases, subsequently corrected or reconstructed. A computer system may employ a mathematical function to generate redundant data from original data. Depending on the mathematical relationship between the original data and the redundant data, the redundant data may contain an equal number of data bits, more data bits, or fewer data bits than the original data. In addition, a redundant data bit may be a complex function of one or more original data bits. If an error is detected, it may be possible to correct the error or reconstruct the data depending on the error-correcting code used. Storing the redundant data on one or more computer storage devices that are physically separate from the computer storage device(s) that contain the original data may provide additional resiliency.